/**
 * rgb 转 hex
 * @param r
 * @param g
 * @param b
 */

export function toHex(r: number, g: number, b: number) {
  const hex = (c: number) => {
    let hex = c.toString(16);
    return hex.length == 1 ? "0" + hex : hex;
  };
  return "#" + hex(r) + hex(g) + hex(b);
}

/**
 * hex 转 rgb
 * @param hex
 */
export function toRgb(hex: string) {
  // @ts-ignore
  const arr: Array = hex
    .replace(
      /^#?([a-f\d])([a-f\d])([a-f\d])$/i,
      (m, r, g, b) => "#" + r + r + g + g + b + b
    )
    .substring(1)
    .match(/.{2}/g)
    .map((x) => parseInt(x, 16));
  return `rgb(${arr[0]},` + `${arr[1]},` + `${arr[2]})`;
}

/**
 * 首节流
 * 第一次会马上执行，之后的操作不一定会执行。第一次执行，最后一次不执行。
 * eg:
 *    function func() { .... }
 *    beginningThrottle(func,200)
 *
 * @param callBack 传入调用函数
 * @param delay 等待时间 | 默认为100毫秒
 */

export function beginningThrottle(callBack:Function, delay: number = 100) {
  let last = 0;
  return function () {
    let now = Date.now();
    if(now - last > delay) {
      // @ts-ignore
      callBack.apply(this,arguments)
      last = now
    }
  }
}

/**
 * 查询是否包含中文
 * @param string
 */
export function isChinese(string:string) {
  const ex=/[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
  return ex.exec(string);
}

/**
 * 查询包含日文
 * @param string
 */
export function isJapanese(string:string) {
  const ex = /[\u0800-\u4e00]/gi;
  return ex.exec(string);
}


/**
 * 包含字符#
 * @param string
 */
export function hasHex(string:string) {
  const ex=/#/gi;
  return !!ex.exec(string);
}

/**
 * 包含字符#
 * @param string
 */
export function prefixRgb(string:string) {
  const ex=/rgb|RGB /gi;
  return !!ex.exec(string);
}

/**
 * 匹配rgb开头 是返回true
 * @param string
 */
export function prRgb(string:string) {
  const rep = /^rgb|^RGB/;
  return rep.test(string);
}

export function isHex(string:string) {
  return /^[A-Fa-f0-9]{1,6}$/.test(string)
}

/**
 * 不能为空
 * true 有值
 * false 无效值
 * @param value
 */
export function isNull(value:any) {
  return value !== null && value !== '' && value !== undefined;
}


/**
 * 判断是否是颜色hex值是的话返回，否则err提醒
 */
import { message } from 'ant-design-vue';
export function hexChange(string:string) {
  if(isNull(string) || hasHex(string)) {
   const val = string.replace('#','');
   if(isHex(val)) {
     return string
   }  else {
     message.error('错误，无效值！！！').then();
   }
  } else if(isNull(string)|| !hasHex(string)) {
    if(isHex(string)) {
      return string;
    } else {
      message.error('错误，无效值！！！').then();
    }
  } else {
    message.error('错误，无效值！！！').then();
  }
}

/**
 * @param Number
 */
export function isFloatNum(Number:string) {
  const reg = /^[0-9]+.?[0-9]*$/;
  return reg.test(Number);
}


export function cpValue(value:any) {
  let oInput = document.createElement("input"); //创建一个input标签
  oInput.setAttribute("value",value);   // 设置改input的value值
  document.body.appendChild(oInput); // 将input添加到body
  oInput.select(); // 获取input的文本内容
  document.execCommand("copy"); // 执行copy指令
  document.body.removeChild(oInput); // 删除input标签
  message.success(`复制成功，${value}`,2)
}

/**
 * 打印err
 * @param msg
 */
export function err(msg:string) {
  message.error(msg).then()
}

/**
 * 对象大于 1
 * @param obj
 */
export function isNullObject(obj:Object) {
 return Object.keys(obj).length > 0
}

/**
 * 查找国家 未找到返回 undefined
 * @param value
 */
export function checkCountry(value:string) {
  const country = {
    CN:'中国',
    cn:'中国',
    JP:'日本',
    jp:'日本'
  }

  for (let i in country) {
    if(value === i) {
      // @ts-ignore
      return country[i]
    }
  }
}
